package cliente.pagina.contenido.grupo.jerarquia.integracion;

import comun.constantes.ACCIONES_A_REALIZAR;
import comun.constantes.CARPETAS_ARCHIVOS_RECURSO;
import comun.constantes.PARAMETROS_PAGINAS;
import comun.constantes.RECURSOS;
import comun.constantes.TEXTOS;
import comun.constantes.TIPO_PERMISOS;
import helpers.grupo.jerarquia.integracion.HelperIntegracion;
import cliente.pagina.Pagina;
import cliente.pagina.contenido.VistaContenido;
import cliente.pagina.contenido.grupo.jerarquia.integracionEditar.*;

public abstract class ContenidoIntegracion extends VistaContenido{
	
	private String resultadoOperacion;
	private Long idIntegracion = null;
	
	public ContenidoIntegracion() {
	}
	
	abstract public String getTituloIntegracionParticular();
	abstract public String getNombreGrupo();
	abstract public String getNombreGrupoPlural();
	abstract public String getGrupoArticuloElLa();
	abstract public String getGrupoModificado();
	abstract public String getGrupoArticuloLosLas();
	abstract public String getGrupoEliminados();
	
	protected String generarHtmlBotonRealizarInvitacionConPermiso(){
	  String html = "";
	  // si tiene permiso de escritura agrego el boton de edicion
	  if (this.getPagina().obtenerPermisoRecurso(this.getNombreRecurso()).compareTo(TIPO_PERMISOS.ESCRITURA)==0)
	   html = this.generarHtmlBotonRealizarInvitacion();
	  return html;
	}
    
    static public ContenidoIntegracion getTipoIntegracion(String tipoIntegracion, Pagina pagina){
  	  //DE ACUERDO AL TIPO DE INTEGRACION el CONTENIDO
  	  ContenidoIntegracion contenidoIntegracion = null;
  	  if (tipoIntegracion.compareTo(RECURSOS.INVITACION) == 0)
  		    contenidoIntegracion = new ContenidoInvitacion(pagina);
  	  if (tipoIntegracion.compareTo(RECURSOS.SOLICITUD) == 0)
  		    contenidoIntegracion = new ContenidoSolicitud(pagina);
  	  return contenidoIntegracion;
  	}
    
    public String getHTMLVista()
	  {
	    HelperIntegracion helperIntegracion=null;
	    try {
	      helperIntegracion = new HelperIntegracion(this.getPagina(),this);
	      String html = "       <h1>"+this.getTitulo()+"</h1>\n\t";
	      
	      // de acuerdo al resultado de laoperacion debo poner un mensaje,
          // si es null quiere decir que la pagina no fue llamada automaticamente desde la pagina que actualiza los datos
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(TEXTOS.ACTUALIZACION_DE_DATOS_EXITOSA)==0)
              html +=  "       <p class=\"mensajeOk\"><img src=\""+this.getPagina().getPathBotonOk()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getGrupoArticuloElLa()+" "+this.getNombreGrupo()
              +" con el t&iacute;tulo &quot;"+helperIntegracion.getTituloTexto(this.idIntegracion)+"&quot; ha sido "+this.getGrupoModificado()+" correctamente. </p>\n";

          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(comun.MensajeDeError.ERROR_EN_LA_ACTUALIZACION_DE_DATOS)==0)
            html += "        <p class=\"mensajeError\"><img src=\""+this.getPagina().getPathBotonError()
            +"\" title=\"_blank\" width=\"12\" height=\"10\"><strong>&iexcl;Error!</strong> No se ha podido actualizar "
            +this.getGrupoArticuloElLa()+" "+this.getNombreGrupo()+" con el t&iacute;tulo &quot;"+helperIntegracion.getTituloTexto(this.idIntegracion)+"&quot; </p>\n";


          // si la accion fue eliminar se debe cambiar el mensaje de OK
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(TEXTOS.ELIMINACION_DE_DATOS_EXITOSA)==0)
              html +=  "       <p class=\"mensajeOk\"><img src=\""+this.getPagina().getPathBotonOk()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getGrupoArticuloLosLas()+" "+this.getNombreGrupoPlural()
              +" han sido "+this.getGrupoEliminados()+" correctamente. </p>\n";

          // si la accion fue eliminar se debe cambiar el mensaje de ERROR
          if (this.resultadoOperacion!=null && this.resultadoOperacion.compareTo(comun.MensajeDeError.ERROR_EN_LA_ELIMINACION_DE_DATOS)==0)
              html +=  "       <p class=\"mensajeError\"><img src=\""+this.getPagina().getPathBotonError()
              +"\" title=\"_blank\" width=\"12\" height=\"10\">"+this.getGrupoArticuloLosLas()+" "+this.getNombreGrupoPlural()
              +" NO han sido "+this.getGrupoEliminados()+" correctamente. </p>\n";

	      
	      if(this.getNombreRecurso().compareTo(RECURSOS.INVITACION)==0)
	    	  html += this.generarHtmlBotonRealizarInvitacionConPermiso();
	      html += helperIntegracion.getHTMLUltimasIntegracionesCompletas(this.getNombreRecurso(),3);
	      html += helperIntegracion.getHTMLUltimasIntegracionesResumidas(this.getNombreRecurso(),3,3);
	      html +=  "   <div align=\"center\" class=\"linkVolver\" ><a href=\""+this.getPagina().getPathPaginas()+"gestion_integracion.jsp?"+PARAMETROS_PAGINAS.REFRESH+"="+new Long((new java.util.Date()).getTime())+"\">Ir al inicio de las integraciones</a></div>\n\t\t";
	      helperIntegracion.commit();
	      return html;
	    }
	    catch (Exception ex) {
	      ex.printStackTrace();
	      helperIntegracion.rollback();
	      return  comun.MensajeDeError.ERROR_EN_LA_GENERACION_DE_LA_PAGINA;
	    }
	  }

	public String getTitulo(){
	    return this.getTituloIntegracionParticular()+this.getPagina().getPosFijoNombrePagina();
	} 

    protected String generarHtmlBotonRealizarInvitacion(){ 
	    String html = "";
	    ContenidoInvitacionEditar contenidoInvitacionEditar = new ContenidoInvitacionEditar(this.getPagina());
	    // si tiene permiso de escritura agrego el boton de edicion para que el usuario pueda realizar invitaciones
	   	String paginaFoward = contenidoInvitacionEditar.getPathNombrePagina();
	   	paginaFoward = utils.UtilsGenerarHtml.agregarParametroUrl(contenidoInvitacionEditar.getPathNombrePagina(),PARAMETROS_PAGINAS.ACCION,ACCIONES_A_REALIZAR.REALIZAR);
	    html =  "  <form name=\"integracionTop\" id=\"integracionTop\" method=\"post\" action=\""+paginaFoward+"\">\n\t\t";
	    html += "       <input name=\"editarInvitacion\" type=\"submit\" class=\"boton\" onclick=\"MM_goToURL('parent','"+paginaFoward+"');return document.MM_returnValue\" value=\"Realizar Nueva Invitaci&oacute;n"+"\" />\n\t\t";
	    html += "  </form>\n\t\t";
	    return html;
	}
    
	  // lo redefino porque necesito sacar los parametros del request que esta en la nueva pagina
	  public void setPagina(Pagina pagina){
	    super.setPagina(pagina);
	    if (pagina.getParameter(PARAMETROS_PAGINAS.RESULTADO_OPERACION)!=null)
	        this.resultadoOperacion = pagina.getParameter(PARAMETROS_PAGINAS.RESULTADO_OPERACION);
	    if (pagina.getParameter(PARAMETROS_PAGINAS.ID_INTEGRACION)!=null)
	        this.idIntegracion = new Long(pagina.getParameter(PARAMETROS_PAGINAS.ID_INTEGRACION));
	  }  

	protected String getSubcarpetaRecurso() {
		return CARPETAS_ARCHIVOS_RECURSO.GRUPOS;
	}
	public void setResultadoOperacion(String resultadoOperacion) {
	    this.resultadoOperacion = resultadoOperacion;
	}
	public String getResultadoOperacion() {
	    return resultadoOperacion;
	}
	public String getTeclaAccesoRapido() {	
		return "I";
	}
}
